ফোরট্রানে IOSTAT এবং ERR স্টেটমেন্টের ব্যবহার
IOSTAT এবং ERR স্টেটমেন্টগুলি ফাইল ইনপুট/আউটপুট (I/O) অপারেশনের সময় ত্রুটি (error) বা বিশেষ অবস্থা (status) ট্র্যাক করতে ব্যবহৃত হয়। এগুলি বিশেষত ডাটা রিডিং, রাইটিং এবং ফাইল অপারেশন করার সময় ত্রুটি হ্যান্ডলিং এবং ডিবাগিংয়ে সহায়ক।
১. IOSTAT
IOSTAT স্টেটমেন্ট একটি আউটপুট ভ্যারিয়েবল প্রদান করে যা ইনপুট/আউটপুট অপারেশনের সফলতা বা ত্রুটির তথ্য প্রদান করে। এটি ফাইল রিড/রাইট অপারেশনগুলির শেষে ফিরে আসে এবং আপনি যদি কোনো ত্রুটি বা বিশেষ অবস্থা চান, তবে এটি ব্যবহার করা হয়।
IOSTAT স্টেটমেন্টের সাধারণ গঠন:
READ(unit, *, IOSTAT=status_variable) variable
WRITE(unit, *, IOSTAT=status_variable) variableunit: ফাইল ইউনিট নম্বর যা ইনপুট/আউটপুট অপারেশন পরিচালনা করে।status_variable: একটি ইন্টিজার ভ্যারিয়েবল যা I/O অপারেশনের ফলাফল ধারণ করবে।variable: ফাইল থেকে পড়তে বা লিখতে থাকা ডেটা।
IOSTAT ব্যবহার করার উদাহরণ:
program iostat_example
implicit none
integer :: iunit, ios, num
character(len=20) :: filename
filename = 'data.txt'
! ফাইল খোলা
open(unit=iunit, file=filename, status='old')
! ফাইল থেকে ডেটা পড়া
read(iunit, *, IOSTAT=ios) num
! যদি কোনো ত্রুটি না ঘটে, তাহলে ios হবে 0
if (ios == 0) then
print *, 'Read successful: ', num
else
print *, 'Error in reading file. IOSTAT = ', ios
end if
! ফাইল বন্ধ করা
close(iunit)
end program iostat_exampleএখানে:
IOSTAT=ios:iosভ্যারিয়েবলটি স্ট্যাটাস ফেরত দেবে। যদি কোনো ত্রুটি না ঘটে, তবেiosএর মান হবে 0।- যদি
iosএর মান ০ না হয়, তবে এটি নির্দেশ করে যে কোনো ত্রুটি ঘটেছে এবং সেই ত্রুটির তথ্য পাওয়া যাবে।
IOSTAT এর মান:
ios = 0: সফল I/O অপারেশন।ios < 0: I/O ত্রুটি (এটি বিভিন্ন কারণে হতে পারে, যেমন ফাইল না পাওয়া, ফাইল শেষ হয়ে যাওয়া, ইত্যাদি)।ios > 0: বিশেষ অবস্থা (যেমন, ফাইলের শেষে পৌঁছানো, অথবা EOF (End of File))।
২. ERR
ERR স্টেটমেন্ট একটি আউটপুট প্যারামিটার হিসেবে ব্যবহার করা হয় যা I/O অপারেশনগুলির জন্য ত্রুটি সনাক্ত করতে সাহায্য করে। এটি ফাইল রিডিং বা রাইটিংয়ের সময় ত্রুটি ঘটলে একটি লেবেল বা কোডে প্রোগ্রামকে ডাইরেক্ট করতে পারে।
ERR স্টেটমেন্টের সাধারণ গঠন:
READ(unit, *, ERR=label) variable
WRITE(unit, *, ERR=label) variableunit: ফাইল ইউনিট নম্বর।label: ত্রুটি ঘটলে কোডটি যেখানে চলে যাবে (এই লেবেলটি একটি লেবেল স্টেটমেন্ট বা কোন নির্দিষ্ট স্টেটমেন্ট হতে হবে)।variable: যেটি ইনপুট বা আউটপুট হচ্ছে।
ERR স্টেটমেন্টের উদাহরণ:
program err_example
implicit none
integer :: iunit, num
character(len=20) :: filename
filename = 'data.txt'
! ফাইল খোলা
open(unit=iunit, file=filename, status='old')
! ফাইল থেকে ডেটা পড়া, যদি কোনো ত্রুটি ঘটে তাহলে error_label এ চলে যাবে
read(iunit, *, ERR=error_label) num
! সফলভাবে ডেটা পড়া হলে এটি চলে যাবে এখানে
print *, 'Read value: ', num
! ত্রুটি ঘটলে এই লেবেলে চলে যাবে
error_label:
print *, 'Error reading file.'
! ফাইল বন্ধ করা
close(iunit)
end program err_exampleএখানে:
ERR=error_label: যদিreadঅপারেশনে কোনো ত্রুটি ঘটে, তাহলে এটিerror_labelনামক লেবেলে চলে যাবে এবংError reading file.বার্তা প্রদর্শন করবে।- যদি কোনো ত্রুটি না ঘটে, তবে সফলভাবে ডেটা পড়ার পর
numপ্রিন্ট হবে।
৩. IOSTAT এবং ERR এর মধ্যে পার্থক্য
| ফিচার | IOSTAT | ERR |
|---|---|---|
| ব্যবহার | I/O অপারেশনের ফলাফল ট্র্যাক করতে ব্যবহৃত। | I/O ত্রুটি সনাক্ত করলে নির্দিষ্ট লেবেলে ডাইরেক্ট করতে ব্যবহৃত। |
| মূল কাজ | I/O অপারেশনের স্ট্যাটাস (সাফল্য বা ত্রুটি) পাওয়া। | ত্রুটির ক্ষেত্রে নির্দিষ্ট স্টেটমেন্ট বা লেবেল চালনা। |
| রিটার্ন ভ্যালু | ইন্টিজার ভ্যালু (0 = সাফল্য, < 0 = ত্রুটি)। | লেবেল বা স্টেটমেন্ট যেখানে প্রোগ্রাম ত্রুটির পর চলে যাবে। |
| ত্রুটি ধরার জন্য | I/O স্ট্যাটাস ইন্টারনালভাবে ফেরত দেয়। | ত্রুটি হলে কোডটি একটি নির্দিষ্ট লেবেলে পরিচালিত হয়। |
উপসংহার
ফোরট্রানে IOSTAT এবং ERR স্টেটমেন্টগুলো ফাইল I/O অপারেশনগুলির সময় ত্রুটি শনাক্ত করতে ব্যবহৃত হয়। IOSTAT অপারেশনের ফলাফল বা ত্রুটির তথ্য প্রদান করে, এবং ERR নির্দিষ্ট লেবেলে কোডটি ডাইরেক্ট করতে সাহায্য করে, যা ত্রুটি হ্যান্ডলিং এবং ডিবাগিংয়ে সহায়ক। এই দুটি স্টেটমেন্ট ব্যবহার করে আপনি কোডের মধ্যে I/O ত্রুটি সঠিকভাবে পরিচালনা করতে পারেন এবং প্রোগ্রামের স্থিতিশীলতা নিশ্চিত করতে পারেন।
Read more